<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="BEmM5" id="BEmM5"><span data-lake-id="u8354ceb4" id="u8354ceb4">典型回答</span></h1>
  <p data-lake-id="u7de0d713" id="u7de0d713"><br></p>
  <p data-lake-id="uab798d3c" id="uab798d3c"><span data-lake-id="ueb1ca022" id="ueb1ca022">其实，</span><strong><span data-lake-id="ucc44f2e3" id="ucc44f2e3">RPC的设计目的就是用于高效的内部服务通信</span></strong><span data-lake-id="u268d41b6" id="u268d41b6">，他通常优化了数据传输和序列化过程，目的是减少网络延迟和提高性能。而HTTP的设计是一种更通用的协议，用于Web文档传输，它在灵活性和可访问性上进行了优化，而不是仅仅专注于性能。</span></p>
  <p data-lake-id="uc17a4c83" id="uc17a4c83"><span data-lake-id="u0f6330b1" id="u0f6330b1">​</span><br></p>
  <p data-lake-id="u48febb15" id="u48febb15"><span data-lake-id="uba9e06d8" id="uba9e06d8">展开来说主要在以下几个方面，RPC做出了很多事情。</span></p>
  <p data-lake-id="u03ad95bf" id="u03ad95bf"><span data-lake-id="u5fb1a1e9" id="u5fb1a1e9">​</span><br></p>
  <p data-lake-id="u33b32efb" id="u33b32efb"><strong><span data-lake-id="u87f9f99f" id="u87f9f99f">轻量级序列化协议</span></strong><span data-lake-id="udc47acb8" id="udc47acb8">，RPC通常使用更高效的数据序列化格式（如Protocol Buffers、Thrift等），这些格式专门为性能和效率设计，它们比HTTP标准使用的文本格式（如JSON、XML）更紧凑、解析更快。</span></p>
  <p data-lake-id="u03cf899b" id="u03cf899b"><span data-lake-id="u02b1369c" id="u02b1369c">​</span><br></p>
  <p data-lake-id="u054908a6" id="u054908a6"><strong><span data-lake-id="u6bd933ba" id="u6bd933ba">网络协议更优，</span></strong><span data-lake-id="u5f554b6b" id="u5f554b6b">RPC的网络通信协议通常被设计的更轻量（如Netty），他一般不需要像HTTP那样有很复杂的Header信息，从而不需要传输太多的数据。</span></p>
  <p data-lake-id="u6e11d64f" id="u6e11d64f"><br></p>
  <p data-lake-id="uc7206017" id="uc7206017"><strong><span data-lake-id="u77f64b41" id="u77f64b41">长连接</span></strong><span data-lake-id="u481b8006" id="u481b8006">，虽然RPC和HTTP都是基于TCP的，但是RPC可以使用长连接和更有效的连接管理策略，如gRPC还是基于HTTP/2实现，这可以减少建立连接的开销，并允许多个请求在同一连接上有效地复用。虽然HTTP/1.1也有keep-alive机制，HTTP/2也有很多优化。但是RPC只在企业内部用，所以兼容性更好，而HTTP新版的普及程度并不太高。</span></p>
  <p data-lake-id="u15da1fe8" id="u15da1fe8"><br></p>
  <p data-lake-id="uee5d7a0b" id="uee5d7a0b"><strong><span data-lake-id="ua69f478d" id="ua69f478d">定制优化</span></strong><span data-lake-id="u22e59cec" id="u22e59cec">，RPC框架通常允许更深层次的定制和优化，比如调整底层传输细节、序列化方式和错误处理机制。而HTTP作为一个标准化的Web协议，其灵活性和定制能力可能较低，特别是在面向性能的场景中。</span></p>
  <p data-lake-id="ud8fbcb13" id="ud8fbcb13"><span data-lake-id="u396d194d" id="u396d194d">​</span><br></p>
  <p data-lake-id="ufe1ec837" id="ufe1ec837"><strong><span data-lake-id="ue77dac78" id="ue77dac78">内部网络，</span></strong><span data-lake-id="u0132d19f" id="u0132d19f">RPC通常应用于企业内部，内部网络交互链路更短，而HTTP在公网上进行通信，一次交互需要经过多个中间节点的转换。</span></p>
 </body>
</html>